Đệ quy trong khoa học máy tính Đệ_quy

Bài chi tiết: Giải thuât đệ quy

Có một phương pháp chung để giải các bài toán là chia bài toán thành các bài toán con đơn giản hơn cùng loại. Phương pháp này được gọi là Thuật toán chia để trị. Chính nó là chìa khóa để thiết kế nhiều giải thuật quan trọng, là cơ sở của quy hoạch động.

Một ví dụ cổ điển của đệ quy là hàm giai thừa cho bằng giả mã trong C hoặc C++ sau đây:

int factorial(n)  {   if (n <= 1)     return 1;   else     return n * factorial(n-1); }

Một ví dụ khác của giải thuật đệ quy là thủ tục duyệt (nghĩa là thực hiện một công việc nào đó với chúng) tất cả các nút của một cấu trúc dữ liệu cây:

 procedure ProcessTree(node) {   ProcessNode(node);    // thực hiện một thuật toán riêng với nút đầu   for each child_node of node do ProcessTree(child_node); }

Để duyệt một cây, gọi thủ tục này với nút gốc của cây như một tham biến khởi tạo. Tiếp theo, thủ tục gọi đệ quy đến chính nó cho tất cả các nút con của nút vừa gọi (nghĩa là các cây con của cây vừa gọi), cho đên khi gặp trường hợp cơ bản nghĩa là nút không có con (thường gọi là "lá").

Chính cấu trúc cây cũng được định nghĩa bằng đệ quy như sau:

  struct node  {    child_nodes: list<node>;...  }  struct tree   {     root: node;...    }

Cây được biểu diễn bằng một nút gốc và danh sách các nút con của nút ấy. Mỗi nút con lại có danh sách các nút con của nó (và như vậy, nó là gốc của một cây con). Lá với danh sách rỗng các nút con là trường hợp cơ sở của nút.